/**
* @Depends ksg.setupUI.js
*/
	var timeout = 300;
	var closetimer = null;
	var openMenus = new Array();
	$(document).ready(setupMenuEvents);

	function setupMenuEvents() {
		$(".SubMenuParent").mouseenter(function (eventObj) {
			var t = $(this);
			var tparent = t.offsetParent(".SubMenu").prev(".SubMenuParent");
			var bheight = $(window).height();
			var bwidth = $(window).width();
			var bhScr = $(window).scrollLeft();
			var bvScr = $(window).scrollTop();
			closeMenus(tparent, t);
			addMenuInArray(t);
			if (!t.hasClass("active"))
				t.addClass("active");
			var cm = t.next(".SubMenu");
			var cmw = cm.width(), cmh = cm.height();

			if (t.hasClass("HorzMenu")) {
				if (t.offset().left + t.width() + cmw > (bwidth + bhScr))
					cm.css("left", t.position().left - cmw);
				else
					cm.css("left", t.position().left + t.width())
				cm.css("top", t.position().top);

			}
			else {
				if ((t.offset().top + t.height() + cmh > (bheight + bvScr)) && (t.position().top - cmh >= 0))
					cm.css("top", t.position().top - cmh);
				else
					cm.css("top", t.position().top + t.height());

				if (t.offset().left + cmw > (bwidth + bhScr)) {
					if (t.offset().left + t.width() > (bwidth + bhScr))
						cm.css("left", bwidth + bhScr - cmw);
					else
						cm.css("left", t.position().left + t.width() - cmw);
				}
				else
					cm.css("left", t.position().left)
			}

			if (cm.hasClass("fadeMenu"))
				cm.fadeIn("def");
			else if (cm.hasClass("slideMenu"))
				cm.slideDown("def");
			else if (cm.hasClass("toggleMenu"))
				cm.toggle("def");
			else
				cm.css("display", "block");
			menuItemOpen = true;
			eventObj.stopPropagation();
		}).mouseleave(function (eventObj) {
			var s = $(eventObj.relatedTarget).offsetParent(".SubMenu").prev(".SubMenuParent");
			var tp = $(this).offsetParent(".SubMenu").prev(".SubMenuParent");
			if (s.length == 0 || s.get(0) != tp.get(0)) {
				setMenuTimer();
			}
			else if (s.get(0) == tp.get(0)) {
				cancelTimer();
				closetimer = window.setTimeout(function () { closeMenus(tp); }, timeout);
			}
			else {
				closeMenus(s);
			}
		});
		$(".SubMenu").mouseenter(function (eventObj) {
			closeMenus($(this).prev(".SubMenuParent").eq(0));
			eventObj.stopPropagation();

		}).mouseleave(function (eventObj) {
			setMenuTimer();
		});
	}

	var menuItemOpen = false;
	function setMenuTimer() {
		cancelTimer();
		closetimer = window.setTimeout("closeMenus()", timeout);
	}
	function closeMenus(inMenParent, inMen) {
		if (typeof inMenParent == "number")
			inMenParent = null;
		cancelTimer();
		for (var i = openMenus.length - 1; i >= 0; i--) {
			if (inMenParent == null || inMenParent == 0 || inMenParent.get(0) != openMenus[i].get(0)) {
				if (inMen != null && inMen.get(0) == openMenus[i].get(0))
					break;
				openMenus[i].removeClass("active");
				var cm = openMenus[i].next(".SubMenu");
				if (cm.hasClass("fadeMenu"))
					cm.fadeOut("def");
				else if (cm.hasClass("slideMenu"))
					cm.slideUp("def");
				else if (cm.hasClass("toggleMenu"))
					cm.toggle("def");
				else
					cm.css("display", "none");
				openMenus.pop();
			}
			else if (inMenParent.get(0) == openMenus[i].get(0))
				break;
		}
		if (openMenus.length == 0)
			menuItemOpen = false;

	}
	function cancelTimer() {
		if (closetimer) {
			window.clearTimeout(closetimer);
			closetimer = null;
		}
	}
	function addMenuInArray(men) {
		for (var i = 0; i < openMenus.length - 1; i++)
			if (men.get(0) == openMenus[i].get(0))
				return;
		openMenus.push(men);
	}
	

